{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "dcacae11",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据准备\n",
    "# 载入分析所需要的模块和函数\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn import metrics\n",
    "from sklearn.metrics import RocCurveDisplay\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "48450508",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 700 entries, 0 to 699\n",
      "Data columns (total 9 columns):\n",
      " #   Column  Non-Null Count  Dtype  \n",
      "---  ------  --------------  -----  \n",
      " 0   V1      700 non-null    int64  \n",
      " 1   V2      700 non-null    float64\n",
      " 2   V3      700 non-null    int64  \n",
      " 3   V4      700 non-null    int64  \n",
      " 4   V5      700 non-null    int64  \n",
      " 5   V6      700 non-null    float64\n",
      " 6   V7      700 non-null    float64\n",
      " 7   V8      700 non-null    float64\n",
      " 8   V9      700 non-null    float64\n",
      "dtypes: float64(5), int64(4)\n",
      "memory usage: 49.3 KB\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>V1</th>\n",
       "      <th>V2</th>\n",
       "      <th>V3</th>\n",
       "      <th>V4</th>\n",
       "      <th>V5</th>\n",
       "      <th>V6</th>\n",
       "      <th>V7</th>\n",
       "      <th>V8</th>\n",
       "      <th>V9</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>20.33</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>2835.2</td>\n",
       "      <td>20.66</td>\n",
       "      <td>2101.48</td>\n",
       "      <td>429.27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>36.59</td>\n",
       "      <td>1</td>\n",
       "      <td>11</td>\n",
       "      <td>27</td>\n",
       "      <td>6113.4</td>\n",
       "      <td>8.67</td>\n",
       "      <td>697.22</td>\n",
       "      <td>482.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>34.96</td>\n",
       "      <td>2</td>\n",
       "      <td>27</td>\n",
       "      <td>22</td>\n",
       "      <td>5670.4</td>\n",
       "      <td>19.67</td>\n",
       "      <td>932.90</td>\n",
       "      <td>1198.02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>26.83</td>\n",
       "      <td>1</td>\n",
       "      <td>14</td>\n",
       "      <td>9</td>\n",
       "      <td>5138.8</td>\n",
       "      <td>21.54</td>\n",
       "      <td>3024.56</td>\n",
       "      <td>933.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>21.14</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>3278.2</td>\n",
       "      <td>16.92</td>\n",
       "      <td>196.40</td>\n",
       "      <td>621.15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   V1     V2  V3  V4  V5      V6     V7       V8       V9\n",
       "0   0  20.33   3   2   3  2835.2  20.66  2101.48   429.27\n",
       "1   0  36.59   1  11  27  6113.4   8.67   697.22   482.16\n",
       "2   0  34.96   2  27  22  5670.4  19.67   932.90  1198.02\n",
       "3   0  26.83   1  14   9  5138.8  21.54  3024.56   933.57\n",
       "4   0  21.14   4   4   2  3278.2  16.92   196.40   621.15"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 数据读取及观察\n",
    "# 描述性分析\n",
    "data=pd.read_csv('5.1.csv')\n",
    "data.info()\n",
    "data.isnull().values.any()#检查数据集中是否有缺失值\n",
    "data.isnull().sum()#缺失值的个数\n",
    "data.head()#列出数据集的前5个样板\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "5372ee7b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>V1</th>\n",
       "      <th>V2</th>\n",
       "      <th>V4</th>\n",
       "      <th>V5</th>\n",
       "      <th>V6</th>\n",
       "      <th>V7</th>\n",
       "      <th>V8</th>\n",
       "      <th>V9</th>\n",
       "      <th>V3_1</th>\n",
       "      <th>V3_2</th>\n",
       "      <th>V3_3</th>\n",
       "      <th>V3_4</th>\n",
       "      <th>V3_5</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>-1.232196</td>\n",
       "      <td>-1.259916</td>\n",
       "      <td>-0.919954</td>\n",
       "      <td>-0.369461</td>\n",
       "      <td>1.075022</td>\n",
       "      <td>0.277036</td>\n",
       "      <td>0.131336</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>1.268634</td>\n",
       "      <td>0.091833</td>\n",
       "      <td>2.596593</td>\n",
       "      <td>0.635585</td>\n",
       "      <td>-0.521525</td>\n",
       "      <td>-0.398382</td>\n",
       "      <td>0.262134</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>1.017936</td>\n",
       "      <td>2.494943</td>\n",
       "      <td>1.863979</td>\n",
       "      <td>0.499768</td>\n",
       "      <td>0.943197</td>\n",
       "      <td>-0.285025</td>\n",
       "      <td>2.032463</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>-0.232479</td>\n",
       "      <td>0.542416</td>\n",
       "      <td>-0.040817</td>\n",
       "      <td>0.336788</td>\n",
       "      <td>1.192200</td>\n",
       "      <td>0.721017</td>\n",
       "      <td>1.378475</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>-1.107616</td>\n",
       "      <td>-0.959527</td>\n",
       "      <td>-1.066477</td>\n",
       "      <td>-0.233644</td>\n",
       "      <td>0.577017</td>\n",
       "      <td>-0.639265</td>\n",
       "      <td>0.605858</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>695</th>\n",
       "      <td>1</td>\n",
       "      <td>0.142799</td>\n",
       "      <td>-0.358750</td>\n",
       "      <td>0.984843</td>\n",
       "      <td>-0.505278</td>\n",
       "      <td>-0.829116</td>\n",
       "      <td>-0.610926</td>\n",
       "      <td>-0.632156</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>696</th>\n",
       "      <td>0</td>\n",
       "      <td>-0.732338</td>\n",
       "      <td>-0.358750</td>\n",
       "      <td>-0.626908</td>\n",
       "      <td>-0.668259</td>\n",
       "      <td>0.181542</td>\n",
       "      <td>-0.558970</td>\n",
       "      <td>-0.306683</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>697</th>\n",
       "      <td>0</td>\n",
       "      <td>-0.232479</td>\n",
       "      <td>0.992999</td>\n",
       "      <td>-0.773431</td>\n",
       "      <td>-0.369461</td>\n",
       "      <td>-0.389700</td>\n",
       "      <td>-0.502292</td>\n",
       "      <td>-0.340143</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>698</th>\n",
       "      <td>0</td>\n",
       "      <td>1.268634</td>\n",
       "      <td>1.593777</td>\n",
       "      <td>2.010502</td>\n",
       "      <td>0.852892</td>\n",
       "      <td>-0.272522</td>\n",
       "      <td>0.352607</td>\n",
       "      <td>0.338179</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>699</th>\n",
       "      <td>0</td>\n",
       "      <td>0.267379</td>\n",
       "      <td>0.542416</td>\n",
       "      <td>0.838320</td>\n",
       "      <td>-0.043500</td>\n",
       "      <td>0.650253</td>\n",
       "      <td>0.678508</td>\n",
       "      <td>0.125253</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>700 rows × 13 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     V1        V2        V4        V5        V6        V7        V8        V9  \\\n",
       "0     0 -1.232196 -1.259916 -0.919954 -0.369461  1.075022  0.277036  0.131336   \n",
       "1     0  1.268634  0.091833  2.596593  0.635585 -0.521525 -0.398382  0.262134   \n",
       "2     0  1.017936  2.494943  1.863979  0.499768  0.943197 -0.285025  2.032463   \n",
       "3     0 -0.232479  0.542416 -0.040817  0.336788  1.192200  0.721017  1.378475   \n",
       "4     0 -1.107616 -0.959527 -1.066477 -0.233644  0.577017 -0.639265  0.605858   \n",
       "..   ..       ...       ...       ...       ...       ...       ...       ...   \n",
       "695   1  0.142799 -0.358750  0.984843 -0.505278 -0.829116 -0.610926 -0.632156   \n",
       "696   0 -0.732338 -0.358750 -0.626908 -0.668259  0.181542 -0.558970 -0.306683   \n",
       "697   0 -0.232479  0.992999 -0.773431 -0.369461 -0.389700 -0.502292 -0.340143   \n",
       "698   0  1.268634  1.593777  2.010502  0.852892 -0.272522  0.352607  0.338179   \n",
       "699   0  0.267379  0.542416  0.838320 -0.043500  0.650253  0.678508  0.125253   \n",
       "\n",
       "     V3_1  V3_2  V3_3  V3_4  V3_5  \n",
       "0       0     0     1     0     0  \n",
       "1       1     0     0     0     0  \n",
       "2       0     1     0     0     0  \n",
       "3       1     0     0     0     0  \n",
       "4       0     0     0     1     0  \n",
       "..    ...   ...   ...   ...   ...  \n",
       "695     1     0     0     0     0  \n",
       "696     1     0     0     0     0  \n",
       "697     0     1     0     0     0  \n",
       "698     0     1     0     0     0  \n",
       "699     0     1     0     0     0  \n",
       "\n",
       "[700 rows x 13 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 数据处理\n",
    "# 区分分类特征和连续特征并进行处理\n",
    "def data_encoding(data):\n",
    "    data = data[[\"V1\",'V2',\"V3\",\"V4\",\"V5\",\"V6\",\"V7\",\"V8\",\"V9\"]]\n",
    "    Discretefeature=[\"V3\"]\n",
    "    Continuousfeature=['V2',\"V4\",\"V5\",\"V6\",\"V7\",\"V8\",\"V9\"]\n",
    "    df = pd.get_dummies(data,columns=Discretefeature)\n",
    "    df[Continuousfeature]=(df[Continuousfeature]-df[Continuousfeature].mean())/(df[Continuousfeature].std())\n",
    "    df[\"V1\"]=data[[\"V1\"]]\n",
    "    return df\n",
    "data=data_encoding(data)\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "83d96ce9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0    517\n",
      "1    183\n",
      "Name: V1, dtype: int64\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "405    0\n",
       "425    0\n",
       "244    0\n",
       "471    1\n",
       "224    0\n",
       "Name: V1, dtype: int64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将样本示例全集分割为训练样本和测试样本\n",
    "X = data.drop(['V1','V3_5'],axis=1)#设置特征变量，即除V1、V3_5之外的全部变量\n",
    "y = data['V1']#设置响应变量，即V1\n",
    "print(data[\"V1\"].value_counts())\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.3,random_state=100)\n",
    "X_train.head()\n",
    "y_train.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "dae66413",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练样本预测准确率: 0.820\n",
      "测试样本预测准确率: 0.805\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[ 0.30583202, -1.75763689, -0.78672375, -0.52988785,  0.37966717,\n",
       "         1.35889186,  0.37877291, -0.83843289, -1.13674176, -1.60004394,\n",
       "        -0.93908317]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用sklearn建立二元Logistic回归算法模型\n",
    "model =  LogisticRegression(C=1e10, fit_intercept=True)\n",
    "model.fit(X_train, y_train)\n",
    "print(\"训练样本预测准确率: {:.3f}\".format(model.score(X_train, y_train)))#训练样本预测对的个数 / 总个数\n",
    "print(\"测试样本预测准确率: {:.3f}\".format(model.score(X_test, y_test)))#测试样本预测对的个数 / 总个数\n",
    "model.coef_\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c9e2edd5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "预测正确总数：\n",
      "169\n"
     ]
    }
   ],
   "source": [
    "predict_target=model.predict(X_test)\n",
    "predict_target\n",
    "predict_target_prob=model.predict_proba(X_test)  \n",
    "predict_target_prob\n",
    "predict_target_prob_lr=predict_target_prob[:,1]\n",
    "df=pd.DataFrame({'prob':predict_target_prob_lr,'target':predict_target,'labels':list(y_test)})\n",
    "df.head()\n",
    "print('预测正确总数：')\n",
    "print(sum(predict_target==y_test))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "5243cfc5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练样本：\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.85      0.91      0.88       359\n",
      "           1       0.70      0.56      0.63       131\n",
      "\n",
      "    accuracy                           0.82       490\n",
      "   macro avg       0.78      0.74      0.75       490\n",
      "weighted avg       0.81      0.82      0.81       490\n",
      "\n",
      "[[328  31]\n",
      " [ 57  74]]\n"
     ]
    }
   ],
   "source": [
    " \n",
    "print('训练样本：')\n",
    "predict_Target=model.predict(X_train)\n",
    "print(metrics.classification_report(y_train,predict_Target))\n",
    "print(metrics.confusion_matrix(y_train, predict_Target))  \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "c9b0bf67",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试样本：\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.85      0.91      0.87       158\n",
      "           1       0.63      0.50      0.56        52\n",
      "\n",
      "    accuracy                           0.80       210\n",
      "   macro avg       0.74      0.70      0.72       210\n",
      "weighted avg       0.79      0.80      0.80       210\n",
      "\n",
      "[[143  15]\n",
      " [ 26  26]]\n"
     ]
    }
   ],
   "source": [
    "print('测试样本：')\n",
    "predict_target=model.predict(X_test)\n",
    "print(metrics.classification_report(y_test,predict_target))\n",
    "print(metrics.confusion_matrix(y_test, predict_target))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "88bf3e9f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'ROC Curve (Test Set)')"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#  绘制ROC曲线，计算AUC值\n",
    "RocCurveDisplay.from_estimator(model, X_test, y_test)\n",
    "x = np.linspace(0, 1, 100)\n",
    "plt.plot(x, x, 'k--', linewidth=1)\n",
    "plt.title('ROC Curve (Test Set)')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dfd2a25a",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
